package com.vpclub.condition;

import com.vpclub.bean.RainBow;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/**
 * @author : leimingchao
 * @Description:
 * @date Date : 2021年06月14日 0:22
 */
public class MyImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
    /**
     *
     * @param importingClassMetadata:当前类的注解信息
     * @param registry：BeanDefinition注册类
     *                把所有需要添加到容器中的bean：
     *                  调用BeanDefinitionRegistry.registerBeanDefinition()手工注册进来
     */
    @Override
    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
        System.out.println("importingClassMetadata: "+importingClassMetadata);
        importingClassMetadata.getAnnotationTypes().stream().forEach(System.out::println);
        boolean flag = registry.containsBeanDefinition("com.vpclub.bean.Red");
        boolean flag2 = registry.containsBeanDefinition("com.vpclub.bean.Blue");
        if (flag && flag2) {
            //指定Bean的定义信息(Bean的类型，Bean。。。。。)
            RootBeanDefinition rootBeanDefinition = new RootBeanDefinition(RainBow.class);
            //注册一个Bean，指定bean名
            registry.registerBeanDefinition("rainBow",rootBeanDefinition);
        }
    }
}
